package com.supermap.dataservice.util;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

/**
 * @Author:langhongshuai
 * @Description:排序算法工具
 * @Date:18/7/31 下午3:44
 */
public class SortUtil {

    //快速排序方法
    public static void quickSort(List<String> list, int low, int high) {
        //1,找到递归算法的出口
        if( low > high) {
            return;
        }
        //2, 存
        int i = low;
        int j = high;
        //3,key
        String key = list.get(low);
        //4，完成一趟排序
        while( i< j) {
            //4.1 ，从右往左找到第一个小于key的数
            while(i<j && compare_date(list.get(j),key)==1){
                j--;
            }
            // 4.2 从左往右找到第一个大于key的数
            while( i<j && (compare_date(list.get(i),key) ==0||compare_date(list.get(i),key)==-1)) {
                i++;
            }
            //4.3 交换
            if(i<j) {
                String p = list.get(i);
                list.set(i,list.get(j));
                list.set(j,p);
            }
        }
        // 4.4，调整key的位置
        String p = list.get(i);
        list.set(i,list.get(low));
        list.set(low,p);
        //5, 对key左边的数快排
        quickSort(list, low, i-1 );
        //6, 对key右边的数快排
        quickSort(list, i+1, high);
    }

    //比较两个时间的大小
    public static int compare_date(String DATE1, String DATE2) {
        //格式化时间
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm");
        try {
            Date dt1 = df.parse(DATE1);
            Date dt2 = df.parse(DATE2);
            //dt1时间在前面
            if (dt1.getTime() > dt2.getTime()) {
                return 1;
            }
            else
                //dt2时间在前面
                if (dt1.getTime() < dt2.getTime())
                {
                    return -1;
                }
                //两者时间一样
                else {
                    return 0;
                }
        } catch (Exception exception) {
            exception.printStackTrace();
        }
        return 0;
    }
}
